Dev4U.SP.PowerShell.Interpreter.prototype.getGrammar = function() {
    function content() {
        /*!
/~
    This is a four-function calculator, where precedences
    are defined via associativity definitions of tokens.

    IMPORTANT: The Warnings coming up when invoking JS/CC
               are coming from the grammar, and are resolved
               in order to the precedences and associativity
               information passed to each token.
~/


/~ --- Token definitions --- ~/

/~ Characters to be ignored ~/
!   ' |\t' ;

/~ Non-associative tokens ~/
    '\('                        LEFT_PARAN
    '\)'                        RIGHT_PARAN
    ;
/~ # Collection Value keywords # ~/
    'Where'     WHERE
    'Select'    SELECT
    '\|'        PIPE
    '\{'        LEFT_BRACE
    '\}'        RIGHT_BRACE
    ;
    
/~ # Operators # ~/
<   '=(\n| )*'                  ASSIGNMENT
;
<    '\.(\n| )*'                DOT
;
<   ',(\n| )*'                  COMMA
;
<   '\+(\n| )*'                 OP_ADD
    '\-(\n| )*'                 OP_SUB
;
<   '\*(\n| )*'                 OP_MULT
    '/(\n| )*'                  OP_DIVIDE
;
/~ # Variables # ~/
    '\$'                        DOLLAR
    '\$[a-zA-Z_0-9]+'           VAR_NAME
    '[a-zA-Z_][a-zA-Z_0-9]+'    IDENTIFIER
   ; 
    
/~ # PS Commands # ~/
    'Get-Help|Get-SPSite|Get-SPList'     PS_COMMAND     [* debugger; Dev4U.SP.PowerShell.Interpreter.getInstance().commands[%match](); *]
    '\-[a-zA-Z_][a-zA-Z_0-9]+'  PS_COMMAND_PARAM
    
   ; 

/~ # Data Types # ~/
    '\'([^\']|\'\')*\''		        STRING		[* %match = %match.substr( 1, %match.length - 2 ); %match = %match.replace( /''/g, "\'" );	*]
    '[0-9]+'                        INT   
    '[0-9]+\.[0-9]*|[0-9]*\.[0-9]+' FLOAT
    ;
    
    

##

/~ --- Grammar specification --- ~/

Programm:      
    Statement
        ;

Statement:
    CommandCall 
    |MethodCall
    |AssignStmt
    |SelectCollectionValueExpression
        ;

AssignStmt:
    VAR_NAME ASSIGNMENT SimpleValueExpression
    ;

CommandCall:
    DOLLAR LEFT_PARAN PS_COMMAND RIGHT_PARAN
    |DOLLAR LEFT_PARAN PS_COMMAND CommandParamList RIGHT_PARAN
    |PS_COMMAND CommandParamList
    ;
    
CommandParamList:
    CommandParamList CommandParam
    |
    ;

CommandParam:
    PS_COMMAND_PARAM SimpleValueExpression
    ;
    
MethodCall:
    SimpleValueExpression DOT IDENTIFIER LEFT_PARAN MethodParamList RIGHT_PARAN
    ;
    
MethodParamList: 
    MethodParamList COMMA SimpleValueExpression
    |
    ;
    
LogicalExpression:
    ;
    
SimpleValueExpression:
    VAR_NAME
    |STRING
    |MethodCall
    |CommandCall
    ;
    
WhereCollectionValueExpression:
    SimpleValueExpression PIPE WHERE LEFT_BRACE LogicalExpression RIGHT_BRACE
    ;

SelectCollectionValueExpression:
    SimpleValueExpression PIPE SELECT LEFT_BRACE SimpleValueExpression RIGHT_BRACE
    ;
        */
    }

    return content.extractComment();
};